#-*- coding: utf-8 -*-
#K-Means聚类算法

import pandas as pd
from pandas import DataFrame
from sklearn.cluster import KMeans #导入K均值聚类算法

inputfile = '../tmp/data_std.xls' #待聚类的数据文件
k = 5                       #需要进行的聚类类别数

#读取数据并进行聚类分析
data = pd.read_excel(inputfile) #读取数据

#调用k-means算法，进行聚类分析
kmodel = KMeans(n_clusters = k, n_jobs = 4) #n_jobs是并行数，一般等于CPU数较好
kmodel.fit(data) #训练模型

#kmodel.cluster_centers_ #查看聚类中心
labels = kmodel.labels_ #查看各样本对应的类别
demo = DataFrame(labels,columns=['numbers'])
demo1= DataFrame(kmodel.cluster_centers_, columns=data.columns) # 保存聚类中心
demo2= demo['numbers'].value_counts() # 确定各个类的数目
#demo2
demo4 = pd.concat([demo2,demo1],axis=1)
demo4.index.name='labels'
demo4.to_excel('../tmp/kmeans_results.xlsx')
#print (kmodel.cluster_centers_)  #查看聚类中心
#print (kmodel.labels_)  #查看各样本类别


#画雷达图 客户群特征分析图
subset = demo1.copy()
subset = subset.round(3)
subset.to_excel('../tmp/test_radar.xlsx')
data = subset.as_matrix() # 将表格数据转成数组
 
from radar1 import drawRader  # 从已经编写好的画雷达图的函数中导入
title = '客户群特征分析图'
rgrids = [0.5, 1, 1.5, 2, 2.5]
itemnames = ['ZL','ZR','ZF','ZM','ZC']
labels = list('abcde')
drawRader(itemnames=itemnames,data=data,title=title,labels=labels, saveas = '../tmp/radar.jpg',rgrids=rgrids)
